#include "Chevalet.h"




void chevRemplir(Chevalet * pChev)
{
   int i;
   SacLettres pSac;
   sacInitialiser(&pSac);
   srand(time(NULL));
   for(i=0;i<6;i++)
   {
       if(pChev->tabLettres[i]=='\0')

        pChev->tabLettres[i]=getLettres(&pSac);
   }
   sacLiberer(&pSac);
}

char chevGetLettre(const Chevalet * pChev,const int i)
{
 return pChev->tabLettres[i];
}

int chevRechLettre(const Chevalet * pChev,const char lettre)
{ int i,res;
  res=0;
    for(i=0;i<6;i++)
    {
        if(pChev->tabLettres[i]==lettre)
        {
            res=i;

        }

    }
    if(res==0) return -1;
    else return res;
}

void chevSuppLettre(Chevalet * pChev,const int indice)
{
   pChev->tabLettres[indice]='\0';
}

void chevInitialiser(Chevalet * pChev)
{
    SacLettres pSac;
    int i;

    sacInitialiser(&pSac);
    pChev->tabLettres=(char *) malloc(sizeof(char)*6);
     for(i=0;i<6;i++)
   {
       pChev->tabLettres[i]='\0';
   }
    chevRemplir(pChev);
    sacLiberer(&pSac);

}

void chevSet(Chevalet * pChev, const int indice,const char lettre)
{
    pChev->tabLettres[indice]=lettre;
}

unsigned int chevTestCaseVide(const Chevalet * pChev,const int indice)
{
    if(pChev->tabLettres[indice]=='\0') return 1;
    else return 0;
}

void chevLiberer(Chevalet * pChev)
{
    free(pChev->tabLettres);
    pChev->tabLettres=NULL;
}

void   testRegresion_Chevalet()
{
    int i;
    Chevalet Chev;
    char c;

    c='\0';

    /* Test pour chevInitialiser() */
    chevInitialiser(&Chev);
    assert(Chev.tabLettres!=NULL);
    for(i=0;i<6;i++)
    {
       assert(Chev.tabLettres[i]!='\0');
    }
    printf("chevInitialiser() Ok...\n chevRemplir() OK...\n");

    /* Test pour chevGetLettre */
    c=chevGetLettre(&Chev,1);
    assert(c==Chev.tabLettres[1]);
    printf("ChevGetLettres() OK... \n");

    /* Test pour chevRechLettre */
    assert(chevRechLettre(&Chev,c)!=-1);
    printf("chevRechLettre() OK...\n");

    /* Test pour chevSuppLettre*/
    chevSuppLettre(&Chev,1);
    assert(chevGetLettre(&Chev,1)=='\0');
    printf("chevSuppLettre() OK...\n");

    /*Test pour chevTestCaseVide */
    assert(chevTestCaseVide(&Chev,1)==1);
    printf("chevTestCaseVide() OK...\n");

    /*Test pour chevSet*/
    chevSet(&Chev,1,'a');
    assert(chevGetLettre(&Chev,1)=='a');
    printf("ChevSet() OK...\n");

    /* Test pour chevLiberer */
    chevLiberer(&Chev);
    assert(Chev.tabLettres==NULL);
    printf("chevLiberer() OK...\n");
}

